﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
using System.Data;
using System.Globalization;
using Hutech.Authentication.Library.Business;
using Hutech.Authentication.Library.Web.Framework;
using Hutech.CRM.Web.Components.Security;

namespace Hutech.CRM.Web.Controls
{
    public partial class ChangePassControl : System.Web.UI.UserControl
    {
        private Guid userId = Guid.Empty;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Request.IsAuthenticated)
            {
                SiteUtils.RedirectToLoginPage(this);
                return;
            }

            LoadParams();
            if (!IsPostBack)
            {
                PopularControls();
                BindData();
            }
        }

        private void PopularControls()
        {
            if (this.userId == Guid.Empty)
            {
                SiteUtils.RedirectToLoginPage(this);
                return;
            }
            else
            {
                this.tbxLoginName.Enabled = false;
                this.tbxFirstName.Enabled = false;
            }
        }

        private void LoadParams()
        {
            userId = SiteUtils.GetCurrentUser().UserId;
            // Hutech.EmplyeeManagement.Workload.Web.Framework.WebUtils.ParseGuidFromQueryString("userid", Guid.Empty);
        }

        private void BindData()
        {
            if (this.userId == Guid.Empty)
                return;

            SiteUser user = new SiteUser(this.userId);

            if (user == null || user.UserId == Guid.Empty)
                return;

            this.lblUserName.Text = user.Name;
            this.tbxLoginName.Text = user.LoginName;
            this.tbxFirstName.Text = user.Name;
        }

        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            this.btnSave.Click += new EventHandler(btnSave_Click);
            this.btnCancel.Click += new EventHandler(btnCancel_Click);
        }


        void btnCancel_Click(object sender, EventArgs e)
        {
            WebUtils.SetupRedirect(this, "~/Default.aspx");
        }

        void btnSave_Click(object sender, EventArgs e)
        {
            SiteUser user = null;
            if (this.userId == Guid.Empty)
            {
                return;
            }

            user = new SiteUser(this.userId);

            //user.LoginName = this.tbxLoginName.Text;
            //user.Name = this.tbxFirstName.Text;

            hutechMembershipProvider remMembership = (hutechMembershipProvider)Membership.Provider;

            if (this.tbxCurrentPassword.Text != "")
            {
                if (user.Password == remMembership.EncodePassword(tbxCurrentPassword.Text))
                {
                    if (this.tbxPassword.Text != "")
                    {
                        user.Password = remMembership.EncodePassword(this.tbxPassword.Text);
                        try
                        {
                            if (remMembership.ChangePassword(user.LoginName, this.tbxCurrentPassword.Text, this.tbxPassword.Text))
                            {
                                this.lblMessage.Text = "Cập nhật mật khẩu thành công.";
                                //Response.AddHeader("REFRESH", "5;URL=Logoff.aspx");
                            }
                            else
                            {
                                this.lblMessage.Text = "Không thể lưu mật mã mới.";
                            }
                        }
                        catch (Exception ex)
                        {
                            this.lblMessage.Text = ex.Message;
                            return;
                        }
                    }
                    else
                    {
                        CustomValidator4Password.IsValid = false;
                        CustomValidator4Password.ErrorMessage = "Bạn phải nhập Mật mã mới vào.";
                        return;
                    }
                }
                else
                {
                    CustomValidator1.IsValid = false;
                    CustomValidator1.ErrorMessage = "Mật mã đang dùng không đúng.";
                    return;
                }
            }
            else
            {
                CustomValidator1.IsValid = false;
                CustomValidator1.ErrorMessage = "Bạn phải nhập Mật mã đang dùng vào.";
                return;
            }
        }
    }
}
